extern crate hammer;
use std::os;
+use std::io::process::ExitStatus;
use cargo::ops;
use cargo::{execute_main_without_stdin};
use cargo::core::{MultiShell};
use cargo::util;
-use cargo::util::{CliResult, CliError, human};
+use cargo::util::{CliResult, CliError, CargoError};
use cargo::util::important_paths::find_project_manifest;
#[deriving(PartialEq,Clone,Decodable)]
for file in test_executables.iter() {
try!(util::process(test_dir.join(file.as_slice()))
.args(options.rest.as_slice())
- .exec().map_err(|_| CliError::from_boxed(human(""), 1)));
+ .exec().map_err(|e| {
+ let exit_status = match e.exit {
+ Some(ExitStatus(i)) => i as uint,
+ _ => 1,
+ };
+ CliError::from_boxed(e.mark_human(), exit_status)
+ }));
}
Ok(None)
test result: FAILED. 0 passed; 1 failed; \
0 ignored; 0 measured\n\n",
COMPILING, p.root().display(),
- sep = path::SEP)));
+ sep = path::SEP))
+ .with_stderr(format!("\
+task '<main>' failed at 'Some tests failed', [..]
+Could not execute process `{test}[..]` (status=101)
+", test = p.root().join("target/test/foo").display()))
+ .with_status(101));
})
test!(test_with_lib_dep {